package com.server.store.data;

import java.util.ArrayList;
import java.util.List;

import com.google.appengine.api.datastore.EntityNotFoundException;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;
import com.googlecode.objectify.Query;
import com.shared.model.Apporteur;
import com.shared.model.Interlocuteur;
import com.shared.utilitaire.Adresse;
/**
 * DAO de gestion des {@link Apporteur}
 * @author queyroi
 *
 */
public class ApporteurManager extends DataManager<Apporteur> {

	static{
		ObjectifyService.register(Interlocuteur.class);
		ObjectifyService.register(Adresse.class);
		ObjectifyService.register(Apporteur.class);
	}
	
	@Override
	public void delete(Apporteur obj) {
		Objectify ofy = ObjectifyService.beginTransaction(); 
		try{
			ofy.delete(obj);
			ofy.getTxn().commit();
		}catch(Exception e){
			if (ofy.getTxn().isActive())
		        ofy.getTxn().rollback();
		}
	}

	@Override
	public List<Apporteur> getList() {
		List<Apporteur> listReturn = new ArrayList<Apporteur>();
		Objectify ofy = ObjectifyService.begin();
		Query<Apporteur> query = ofy.query(Apporteur.class);
		for(Apporteur a : query){
			listReturn.add(a);
		}
		return listReturn;
	}

	@Override
	public void save(Apporteur obj) {
		Objectify ofy = ObjectifyService.beginTransaction(); 
		try{		
			ofy.put(obj);
			ofy.getTxn().commit();
		}catch(Exception e){
			if (ofy.getTxn().isActive())
		        ofy.getTxn().rollback();
		}		
	}

	@Override
	public void update(Apporteur obj) {
		Objectify ofy = ObjectifyService.beginTransaction(); 
		try{		
			ofy.put(obj);
			ofy.getTxn().commit();
		}catch(Exception e){
			if (ofy.getTxn().isActive())
		        ofy.getTxn().rollback();
		}			
	}
	
	public List<Interlocuteur> getListInterlocuteurs(Apporteur obj) throws EntityNotFoundException{
		Objectify ofy = ObjectifyService.begin();
		List<Interlocuteur> listReturn = new ArrayList<Interlocuteur>();
		for(Key<Interlocuteur> keyInterlocuteur : obj.getListeKeyInterlocteurs()){
			listReturn.add(ofy.get(Interlocuteur.class,keyInterlocuteur.getId()));			
		}
		return listReturn;
	}

}
